import { nextTick  } from 'vue'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import router from '@/router'
import store from '@/store'

export default {
  //刷新标签
  refresh() {
    NProgress.start()
    const route = router.currentRoute.value
    store.commit("removeKeepLive", route.name)
    store.commit("setRouteShow", false)
    nextTick(() => {
      store.commit("pushKeepLive", route.name)
      store.commit("setRouteShow", true)
      NProgress.done()
    })
  },
  //关闭标签
  close(tag) {
    const route = tag || router.currentRoute.value
    store.commit("removeViewTags", route)
    store.commit("removeIframeList", route)
    store.commit("removeKeepLive", route.name)
    const tagList = store.state.viewTags.viewTags
    const latestView = tagList.slice(-1)[0]
    if (latestView) {
      router.push(latestView)
    } else {
      router.push('/')
    }
  },
  //关闭标签后处理
  closeNext(next) {
    const route = router.currentRoute.value
    store.commit("removeViewTags", route)
    store.commit("removeIframeList", route)
    store.commit("removeKeepLive", route.name)
    if(next){
      const tagList = store.state.viewTags.viewTags
      next(tagList)
    }
  },
  //关闭其他
  closeOther() {
    const route = router.currentRoute.value
    const tagList = [...store.state.viewTags.viewTags]
    tagList.forEach(tag => {
      if(tag.meta&&tag.meta.affix || route.fullPath==tag.fullPath){
        return true
      }else{
        this.close(tag)
      }
    })
  },
  //设置标题
  setTitle(title){
    store.commit("updateViewTagsTitle", title)
  }
}
